package 数组;
/**
 * 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2，另有两个整数 m 和 n ，分别表示 nums1 和 nums2 中的元素数目。
 * https://leetcode-cn.com/problems/merge-sorted-array/
 *
 */
public class _88_合并两个有序数组 {
    /*
        两个指针
            l1指向num1有元素最后，l2指向num2有元素的最后，len指向num1数组的最末尾，每次遍历比较值大小之后，则进行填充
            当l1<0时，循环结束，如果此时num2还有数据没有拷贝完，说明剩下的数组都是最小的，将其全部拷贝进num1即可
            将其直接拷贝到 nums1 的前面
     */
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int l1 = m-1;
        int l2 = n-1;
        int len = m+n-1;

        while(l1>=0 && l2>=0){
            if(nums1[l1]>nums2[l2]){
                nums1[len--] = nums1[l1--]; //放完以后要将变量递减
            }else{
                nums1[len--] = nums2[l2--];
            }
        }

        //如果nums2还没有拷贝完
        for(int i=0;i<l2+1;i++){
            nums1[i] = nums2[i];
        }

    }
}
